這邊我們可以利用TelemetryClient.Flush();
來達到
一般來說,SDK會以固定間隔(通常是30秒)或每次緩衝區已滿(通常是500 items)傳送資料
不過,也許我們會有需要排清緩衝區的需求
例如,如果我們在會被關閉的應用程式中使用SDK(通常也都是在這種情境下使用)
通常我們在Web Application裡面,預設都是使用Cookie來識別用戶
但...如果用戶他使用了不同的電腦、或是無痕瀏覽、也有可能刪除了Cookie
那麼在這種情況...可能計量的準確度就會大幅下降!
但..別擔心!
我們可以從瀏覽器程式碼中設定經過驗證的使用者識別碼,來避免這問題
以下程式碼片段為JavaScript的操作方法:
// Called when my app has identified the user.
function Authenticated(signInId) {
var validatedId = signInId.replace(/[,;=| ]+/g, "_");
appInsights.setAuthenticatedUserContext(validatedId);
...
}
而Razor部分我們可以參考下列的程式碼片段:
@if (Request.IsAuthenticated)
{
<script>
appInsights.setAuthenticatedUserContext("@User.Identity.Name
.Replace("\\", "\\\\")"
.replace(/[,;=| ]+/g, "_"));
</script>
}
其實在使用者計量的部分,我們並不需要用到使用的實際登入的名稱
All we need is 使用者的唯一識別碼(注意唷!其中不能包含空格或任何 ,;=| 字元)
這個很簡單...如果我們沒有使用SDK的狀況下...只需要單純在Azure操作即可
但....如果是有使用SDK呢?
a. 刪掉SDK是個方法...有點麻煩的
b. 貼上一行簡單的Code(簡潔有力)
所以我們只需要插入下列程式碼即可:
TelemetryConfiguration.Active.DisableTelemetry = true;
太好了,大家一起都努力混到20天了!
看來這幾天的招式也學得差不多了
接下來剩下的10天,最後的三分之一就看看能不能練到...從心所欲的境界吧!!